package mop.util;

/**
 * Class Couple 
 * @author MOP Team 7
 *
 * Accepts two generalizations :: T & Z
 */
public class Couple<T,Z>
{
	/**
	 * Constructor for Couple Class
	 * 
	 * @param first  The left value of type T
	 * @param second The right value of type Z
	 * 
	 * @effect set new first
	 * 	| this.setFirst
	 * @effect set new Second
	 * 	| this.setSecond
	 */
    public Couple(T first,Z second)
    {
       setFirst(first);
       setSecond(second);
    }
    
    
	/***************************************************************************
	 * 						first
	 ***************************************************************************/

    /**
	 * Inspector for the first attribute
	 * @return first
     */
    public T first()
    {
        return this.first;
    }
    
    /**
     * Mutator for the first attribute 
     * 
     * @param left new value for first
     */
    public void setFirst(T left)
    {
        this.first = left;
    }
    
    /**
     * First value
     */
    private T first;
	/***************************************************************************
	 * 						second
	 ***************************************************************************/
   
    /**
	 * Inspector for the second attribute
	 * @return second
     */
    public Z second()
    {
        return this.second;
    }

    /**
	 * Mutator for the second attribute
	 * 
	 * @param right new value for second
     */
    public void setSecond(Z right)
    {
        this.second = right;
    }
    
    /**
     * Secondary value
     */
    private Z second;
} 